///////////////////////////////////////////////////////////////////////////////
//-----------------------------------------------------------------------------
#include <Texture/ITextureLoader.h>
#include <File/File.h>

std::vector<ITextureLoader*> ITextureLoader::m_textureLoaders;

//-----------------------------------------------------------------------------

void	ITextureLoader::RegisterLoader(ITextureLoader*	loader)
{
	m_textureLoaders.push_back(loader);
}

//-----------------------------------------------------------------------------

void	ITextureLoader::UnregisterLoader(ITextureLoader*	loader)
{
	std::vector<ITextureLoader*>::iterator iter;
	for( iter = m_textureLoaders.begin(); iter != m_textureLoaders.end(); iter++ )
	{
		if( (*iter) == loader )
		{
			SAFE_DEL( (*iter) );
			m_textureLoaders.erase( iter );
		}
	}
}

//-----------------------------------------------------------------------------

void	ITextureLoader::UnregisterLoaders()
{
	std::vector<ITextureLoader*>::iterator iter;
	for( iter = m_textureLoaders.begin(); iter != m_textureLoaders.end(); iter++ )
	{
		SAFE_DEL( (*iter) );
	}
	m_textureLoaders.clear();
}

//-----------------------------------------------------------------------------

ITextureLoader*	ITextureLoader::GetLoaderForFile(File* textureFile)
{
	std::vector<ITextureLoader*>::iterator iter;
	for( iter = m_textureLoaders.begin(); iter != m_textureLoaders.end(); iter++ )
	{
		if( (*iter)->CanLoad( textureFile ) )
		{
			return (*iter);
		}
	}
	return NULL;
}

//-----------------------------------------------------------------------------
///////////////////////////////////////////////////////////////////////////////
